package com.coder.rental.utils;

import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author: zhanglin
 * @description:   统一返回结果
 * @date 2025/3/16
 */
@Data
@Accessors(chain = true)
/*
* 链式编程的处理方式，链式编程允许在一个对象上连续调用多个方法，而不需要重复对象名。
* */
public class Result<T> {
    private Integer code;
    private String message;
    private Boolean success;
    private T data;  //返回泛型数据

    private Result(){
    }
    /*
    * 创建一个表示增加、删除、修改操作成功的Result对象
    * 第一个<T>是泛型声明，第二个<T>是返回值的泛型类型
    * */
    public static <T> Result<T> success(){
        //创建Result对象并初始化为成功状态
        return new Result<T>().setSuccess(true)
                .setCode(ResultCode.SUCCESS).setMessage("操作成功");
    }
    /*
    * 创建一个表示查询操作成功的Result对象，因为查询成功需要返回data数据
    * */
    public static <T> Result<T> success(T data){
        return new Result<T>().setSuccess(true)
                .setCode(ResultCode.SUCCESS).setMessage("操作成功").setData(data);
    }
    /*
    * 创建一个操作失败的Result对象
    * */
    public static <T> Result<T> fail(){
        //创建Result对象并初始化为成功状态
        return new Result<T>().setSuccess(false)
                .setCode(ResultCode.ERROR).setMessage("操作失败");
    }


}
